package com.jxust.controller;

import com.jxust.pojo.*;
import com.jxust.service.EmpService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;
import java.util.List;

/**
 *员工管理Controller
 */
@Slf4j
@RequestMapping("/emps")
@RestController
public class EmpController {

    @Autowired
    private EmpService empService;

    /**
     * 分页查询
     */

//    @GetMapping
//    public Result page(@RequestParam(defaultValue = "1") Integer page,
//                       @RequestParam(defaultValue = "10") Integer pageSize) {
//        log.info("分页查询: page={}, pageSize={}", page, pageSize);
//        try {
//            PageResult<Emp> pageResult = empService.page(page, pageSize);
//            log.info("查询成功，数据：{}", pageResult);
//            return Result.success(pageResult);
//        } catch (Exception e) {
//            log.error("查询失败", e);
//            return Result.error("系统异常: " + e.getMessage());
//        }
//    }
    @GetMapping
    public Result page(EmpQueryParam empQueryParam) {
        log.info("分页查询: page={}, pageSize={}", empQueryParam);
        try {
            PageResult<Emp> pageResult = empService.page(empQueryParam);
            log.info("查询成功，数据：{}", pageResult);
            return Result.success(pageResult);
        } catch (Exception e) {
            log.error("查询失败", e);
            return Result.error("系统异常: " + e.getMessage());
        }
    }

    /**
     * 新加员工
     * 加RequestBody的原因是用的post传过来的是json格式，如果不加RequestBody，会报错
     */
    @PostMapping
    public Result save(@RequestBody Emp emp){
        log.info("新增员工：{}",  emp);//日志中记录emp的数据
        empService.save(emp);
        return Result.success();
    }

    /**
     * 批量删除员工
     */
    @DeleteMapping
    public Result delete(@RequestParam List<Integer> ids){
        log.info("批量删除部门: ids={} ", ids);
        empService.deleteByIds(ids);
        return Result.success();
    }

    @GetMapping("/{id}")
    public Result getInfo(@PathVariable Integer id){
        log.info("查询员工数据：{}", id);
        Emp emp = empService.getInfo(id);
        return Result.success(emp);
    }

    @GetMapping("/list")
    public Result listMasters() {
        List<Emp> list = empService.listMasters();
        return Result.success(list);
    }

    @PutMapping
    public Result update(@RequestBody Emp emp){
        log.info("修改员工信息：{}", emp);
        empService.update(emp);
        return Result.success();
    }
}
